Мы уже несколько раз касались этого класса раньше. Теперь пришло время познакомиться с ним подробнее.
Этот класс позволяет нам работать с таким элементом управления Windows, как список. Для работы давайте создадим учебный проект с помощью MFC AppWizard и именем TestList на базе диалогового окна. Поместим на него элемент управления список(CListBox) и свяжем этот элемент управления с помощью Class Wizard с реальным объектом, тип у которого будет Control. Вот так это выглядит.
class CTestListDlg : public CDialog
{
......
//Dialog Data
//{{AFX_DATA(CTestListDlg)
enum { IDD = IDD_TESTLIST_DIALOG };
CListBox m_List;
//}}AFX_DATA
......
};
Давайте сразу добавим несколько записей:
BOOL CTestListDlg::OnInitDialog()
{
......
// TODO: Add extra initialization here
m_List.AddString("США");
m_List.AddString("РОССИЯ");
m_List.AddString("КАНАДА");
m_List.AddString("ЯПОНИЯ");
return TRUE; // return TRUE unless you set the focus to a control
}
Это все нам знакомо. Для того, чтобы более подробно изучить этот класс нам придется создать свой класс-наследник от CListBox. Для этого выберем пункт меню New Class. Укажите его тип MFC Class и имя CTestList, базовый класс у него будет CListBox. Теперь нам нужно сделать ссылку на заголовочный файл в классе диалога.
// TestListDlg.h : header file // #if !defined(AFX_TESTLISTDLG_H__62DE931C_B7E3_11D4_9414_444553540000__INCLUDED_) #define AFX_TESTLISTDLG_H__62DE931C_B7E3_11D4_9414_444553540000__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "TestList1.h" /////////////////////////////// // CTestListDlg dialog class CTestListDlg : public CDialog ......
Обратите внимание, как VC корректно решил проблему имен. Ведь заголовочный файл с таким именем уже был. Теперь нам нужно заменить ссылку с CListBox на наш класс.
......
class CTestListDlg : public CDialog
{
// Construction
public:
CTestListDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CTestListDlg)
enum { IDD = IDD_TESTLIST_DIALOG };
CTestList m_List;
//}}AFX_DATA
......
Скомпилируйте и проверьте. Все готово к испытаниям.